<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 都是不改变方法*/
        /*
            数组的高阶方法（高阶函数） 参数也是一个函数--

            sort 就是一个高阶函数
        */

        var arr = [9, 8, 7, 6];

        /* 
            作用:遍历数组--元素和下标
            参数：是一个函数callbackFn(回调函数)
                这个参数函数 接收三个参数.--
                `第一个 就是 数组的元素，第二个这个元素对应的下标，第三个，数组本身

                forEach内部调用了这个参数函数callbackFn  若干次（数组有几个元素，就调用callbackFN几次）

                forEach内部 写了一个for循环，遍历数组的元素，每遍历一次就调用 参数函数一次

                arr.forEach  = function(callbackFn){
                    for(var i=0;i<arr.length;i++){
                        callbackFn(arr[i],i,arr)
                    }
                }


        */

        arr.forEach(function (v, i, a) {

            // v第一个 就是 数组的元素，i 第二个这个元素对应的下标，a 第三个，数组本身
            console.log(v, i, a);
        })
        // arr.forEach()

        arr.forEach(function (v) {
            console.log(v);
        })
        arr.forEach(function (v, i) {
            console.log(v, i);
        })
    </script>

</body>

</html>